package cn.izeno.wx.service

import cn.izeno.wx.models.mp.Menu
import cn.izeno.wx.models.mp.MenuMatch
import cn.izeno.wx.models.mp.MenuMathUser
import io.reactivex.rxjava3.core.Observable
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Query

/**
 * 微信公众号自定义菜单接口
 */
interface MenuService {
  @POST(" https://api.weixin.qq.com/cgi-bin/menu/create")
  fun create(
      @Query("access_token") accessToken: String,
      @Body body: String
  ): Observable<String>

  /**
   * 使用接口创建自定义菜单后，开发者还可使用接口查询自定义菜单的结构。
   * 另外请注意，在设置了个性化菜单后，使用本自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息。
   */
  @GET("https://api.weixin.qq.com/cgi-bin/menu/get")
  fun get(@Query("access_token") accessToken: String): Observable<Menu>

  /**
   * 使用接口创建自定义菜单后，开发者还可使用接口删除当前使用的自定义菜单。
   * 另请注意，在个性化菜单时，调用此接口会删除默认菜单及全部个性化菜单。
   */
  @GET("https://api.weixin.qq.com/cgi-bin/menu/delete")
  fun delete(@Query("access_token") accessToken: String): Observable<String>

  /**
   * 创建个性化菜单
   */
  @POST("https://api.weixin.qq.com/cgi-bin/menu/addconditional")
  fun addConditional(
      @Query("access_token") accessToken: String,
      @Body body: MenuMatch
  ): Observable<MenuMatch>


  /**
   * 删除个性化菜单
   */
  @POST("https://api.weixin.qq.com/cgi-bin/menu/delconditional")
  fun deleteConditional(
      @Query("access_token") accessToken: String,
      @Body body: MenuMatch
  ): Observable<String>

  /**
   * 测试个性化菜单匹配结果
   */
  @POST("https://api.weixin.qq.com/cgi-bin/menu/trymatch")
  fun tryMatch(
      @Query("access_token") accessToken: String,
      @Body body: MenuMathUser
  ): Observable<MenuMatch>

}